Skip to content

Clarify script entry point targets#2060

Open
Herrtian wants to merge 2 commits into
pypa:mainfrom
Herrtian:clarify-script-entry-point-targets
Open

Clarify script entry point targets#2060
Herrtian wants to merge 2 commits into
pypa:mainfrom
Herrtian:clarify-script-entry-point-targets

Conversation

@Herrtian
Copy link
Copy Markdown
Contributor

@Herrtian Herrtian commented May 22, 2026

Fixes #1993.

Summary:

  • clarify that script entry points need a module:object target

Checks:

  • uv run --with pre-commit pre-commit run --files source/guides/writing-pyproject-toml.rst
  • uv run --with nox nox -s build
  • git diff --check

📚 Documentation preview 📚: https://python-packaging-user-guide--2060.org.readthedocs.build/en/2060/

will be available. Executing this command will do the equivalent of
``import sys; from spam import main_cli; sys.exit(main_cli())``.

Script entry points must use the ``module:object`` form. The object
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per EPS, this is called an "object reference." I think we should probably use that language consistently and link to it as well:

Suggested change
Script entry points must use the ``module:object`` form. The object
Script entry points are written as object references like ``importable.module``, or importable.module:object.attr``. The object

Ref: https://packaging.python.org/en/latest/specifications/entry-points/#data-model

Comment on lines +212 to +213
reference should point to a function that can be called with no arguments,
not to a module by itself.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is de facto true (I think), but in principle I think script entry points can be modules if the user does something cursed like forcefully instantiating a callable module instance.

Not sure if that's worth qualifying though, the "should" is probably good enough 🙂

@Herrtian
Copy link
Copy Markdown
Contributor Author

Herrtian commented Jun 6, 2026

Updated this to use the object reference terminology, link to the entry points spec, and avoid requiring the target to be strictly a function.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clarify entry point's object reference specification

2 participants